<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
            1. 数据类型的分类
                - 基本(值)类型
                    String: 任意的字符串
                    Number: 任意的数字
                    boolean: true/false
                    null: null
                    undefined: undefined
                - 对象(引用)类型
                    Object: 任意对象
                    Function: 一种特别的对象(可以执行)
                    Array: 一种特别的对象(根据下标,内部数据是有序的)

            2. 判断数据类型的方法
                typeof: 判断 undefined / 数值 / 字符串 / 布尔值 / function
                            不能判断 null和Object、也不能判断Object和Array
                instanceof: 判断对象的具体类型
                ===: 只能判断undefined和null
        */ 

        // 1. 基本
        // 要注意, typeof返回的是数据类型的字符串表达, 不是类型本身, 举例: undefined和'undefined'是不同的两个概念
        var a;//只定义不赋值就是undefined
        console.log(a,typeof a,typeof a =='undefined',a===undefined);

        var b = 1;
        console.log(typeof b,typeof b==='number');
        var c = '1';
        console.log(typeof c,typeof c==='string');
        // 然后有趣的就来了, 你是不是以为typeof可以判断null, 那我们来试下?
        var d  = null;
        console.log(typeof d,typeof d==='null');//厉害了, null竟然是object

        console.log('----------------------分 割 线--------------------------');

        // 2. 对象
        var b1 = {
            b2:[1,'abc',console.log],   
            b3:function(){
                console.log('b3');
                return function(){
                    return 'xfzhang'
                }
            }
        };

        console.log(b1 instanceof Object,b1 instanceof Array);//true false
        console.log(b1.b2 instanceof Object,b1.b2 instanceof Array);//true true
        console.log(b1.b3 instanceof Object,b1.b3 instanceof Function);//true true

        console.log(typeof b1.b2);//object

        console.log(typeof b1.b3,typeof b1.b3 === 'function');//'function' true
        console.log(typeof b1.b2[2],typeof b1.b2[2] ==='function');//'function' true
    </script>
</body>
</html>